package com.wolfword.crawler.server.service;

import java.util.List;
import java.util.Map;

import com.wolfword.crawler.server.entity.ClientLogEntity;

/**
 * 
 *
 * @author Server Zhang
 * @date 2018-01-11 10:54:52
 */
public interface ClientLogService {

	/**
	 * 插入数据
	 *
	 * @param entity
	 *            实体类
	 * @return 主键值
	 */
	long insert(ClientLogEntity entity);

	/**
	 * 批量插入数据
	 *
	 * @param list
	 *            实体类
	 */
	void batchInsert(List<ClientLogEntity> list);

	/**
	 * 根据主键更新数据 id
	 *
	 * @param entity
	 *            新数据
	 */
	Integer updateByPrimary(ClientLogEntity entity);

	/**
	 * 根据主键获取数据 id
	 *
	 * @param entity
	 *            查询条件
	 * @return 查询结果
	 */
	ClientLogEntity getByPrimary(ClientLogEntity entity);

	/**
	 * 根据查询条件获取一条记录
	 *
	 * @param conditions
	 *            查询条件
	 * @return 查询结果
	 */
	ClientLogEntity getOne(Map<String, Object> conditions);

	/**
	 * 根据查询条件查询
	 *
	 * @param conditions
	 *            查询条件
	 * @return 结果集
	 */
	List<ClientLogEntity> queryList(Map<String, Object> conditions);

	/**
	 * 查询所有数据
	 *
	 * @return 结果集
	 */
	List<ClientLogEntity> getAll();

	/**
	 * 清理僵尸客户端
	 * 将长时间无请求的客户端置为断开状态
	 * @author ServerZhang
	 * @date 2018年1月24日
	 */
	void cleanDeadClient();
	/**
	 * 向客户端状态池中添加数据
	 * @param clientIp
	 * @param clientPort
	 * @param status
	 * @author ServerZhang
	 * @date 2018年1月24日
	 */
	void addClientStatus(String clientIp, Integer clientPort, Integer status);

	/**
	 * list
	 * @param clientName
	 * @param clientIp
	 * @param clientPort
	 * @param status
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @author ServerZhang
	 * @date 2018年1月24日
	 */
	List<ClientLogEntity> list(String clientName, String clientIp,
			Integer clientPort, Integer status, Integer pageIndex,
			Integer pageSize);
}
